/*
 ** 基本公共通用js操作方法
 */
WHOOPSFEED.base = (function () {
    return {
        /*
         **	系统初始化
         */
        init:function () {
            //登录 注册 弹出窗 start**********************
            var dialog_login_register_options = {
                triggerId:'#_registe,#_login',
                temp:LoginRegisteDialogTemp,
                removeId:'#_close_login_register',
                onBeforeStart:function(){

                },
                completeEvent:function(){
                    //登录注册模版 Tab切换效果
                    var switch_tab_options = {
                        //(1)普通点击切换效果
                        //switchBtn : true,//绑定前一个后一个使用 (2)
                        //timeout:300,//延时响应(3)
                        //autoRun:3000,//自动运行(4)
                        onBeforeStart:function(){//绑定事件(5)
                            //console.log('switch_tab');
                        }
                    };
                    WHOOPSFEED.base.switch_tab(switch_tab_options);
                }
            };

            WHOOPSFEED.base.show_remove_temp(dialog_login_register_options);
            //登录 注册 弹出窗 end**********************
            var ajax_dialog_options = {
                triggerId:'#_love_tools'
            };
            WHOOPSFEED.base.ajax_top_show_temp(ajax_dialog_options);


            WHOOPSFEED.base.hover_show_box();//登录用户菜单
            WHOOPSFEED.base.search_input_show();//搜索框
            WHOOPSFEED.base.slider_show();//首页banner
            WHOOPSFEED.base.gotop();//返回顶部特效
        },

        //鼠标移动入触发显示 适合触发元素与被触发元素在一个层或者相近的情况
        hover_show_box:function(options) {

            var defaults = {
                hoverId:'#userInfo', //触发的元素或id,必填参数
                showId:'#userInfoBox'   //显示元素
            };

            var options = $.extend(defaults, options);

            var hover_div = $(options.hoverId), show_div = $(options.showId);

            hover_div.bind('mouseenter', function() {
                show_div.show();
            }).bind('mouseleave', function() {
                show_div.hide();
                show_div.bind('mouseenter',function(){
                    show_div.show();
                }).bind('mouseleave', function() {
                    show_div.hide();
                });
            });
        },

        //所有模版显示方法
        show_remove_temp:function (options) {
            //默认层插入HTML时先隐藏
            var defaults = {
                triggerId:null, //触发的元素或id,必填参数
                eventType:"click", //触发事件的类型
                temp:null, //显示模版 templates.js,必填参数
                tempData:{id:'#_dialog_login_register'}, //模版参数，* id,必填参数
                removeId:null, //移除模版素或id     选填一项
                autoRemoveTime:5000, //自动关闭时间closeid/autoCloseTime 选填一项
                useOffsets:false, //是否调整层的位置
                setOffsets:{                             //弹出层容器位置的调整值
                    left:0,
                    top:0
                },
                isresize:true, //是否绑定window对象的resize事件
                onBeforeStart:function () {
                }, //自定义事件
                completeEvent:function () {
                }               //自定义事件
            };

            var options = $.extend(defaults, options);

            $(options.triggerId).bind(options.eventType, function (evt) {//给触发元素绑定触发事件

                options.onBeforeStart();

                options.tempData.type = evt.target.id;//模版类别用户模版显示判断
                $('body').append(options.temp(options.tempData));//模版插入到HTML

                if (options.useOffsets) {//设置模版显示位置
                    $(options.tempData.id).css({left:options.setOffsets.left, top:options.setOffsets.top});
                }

                $(options.tempData.id).show();//显示层

                if (options.removeId) {//手动移除
                    $(options.removeId).bind(options.eventType, function () {       //给移除元素绑定触发事件
                        $(options.tempData.id).remove();//移除层
                        $("div[id^='_dialog_como_']").remove();//隐藏弹出层下拉框
                    });
                } else {//自动移除
                    setTimeout(
                        function () {
                            $(options.tempData.id).remove();//移除层
                            $("div[id^='_dialog_como_']").remove();//隐藏弹出层下拉框
                        }, options.autoRemoveTime
                    );
                }

                options.completeEvent();

            });
        },

        //ajax交互操作后显示
        ajax_top_show_temp:function(options){
            //所有模版默认样式隐藏
            var defaults = {
                triggerId:null, //触发的元素或id,与isAuto 是否自动弹出 选填一项
                isAuto:false,//是否自动划出,与触发的元素或id 选填一项
                temp:AlbumAddTemp,
                tempData:{id:'_dialog_ajax_xx',remove_id:'_remove_dialog_ajax_xx',css_top:'-220px',show_css_top:'-10'}, //模版参数，* id,必填参数
                okSubmit:'',
                resetSubmit:'',
                onBeforeStart:function () {
                }, //自定义事件
                completeEvent:function () {
                }               //自定义事件
            };

            var options = $.extend(defaults, options);

            options.tempData.effectsData = -options.effectsData;


            if(options.triggerId || options.isAuto == true){
                $(options.triggerId).bind('click', function (evt) {//给触发元素绑定触发事件
                    $('body').append(options.temp(options.tempData));
                    $('#'+options.tempData.id).stop(true).animate({'margin-top':options.tempData.show_css_top,'opacity':'1'},"slow");
                });
            }else{
                $('body').append(options.temp(options.tempData));
                $('#'+options.tempData.id).stop(true).animate({'margin-top':options.tempData.show_css_top,'opacity':'1'},"slow");
            }

            if (options.tempData.remove_id) {//手动移除
                $('#'+options.tempData.remove_id).bind('click', function () {       //给移除元素绑定触发事件
                    $('#'+options.tempData.id).stop(true).animate({'margin-top':options.tempData.css_top,'opacity':'0'},800);
                    $('#'+options.tempData.id).remove();//移除层
                });
            }


        },

        //所有下拉框控制显示移除
        select_temp:function(options){
            //默认层插入HTML时先隐藏
            var defaults = {
                triggerId:'#_baobei_album_select,#_baobei_type_select', //触发的元素或id,必填参数
                eventType:'click', //触发事件的类型
                selectType:'baobei_select',
                temp:AllSelectTemp, //显示模版 templates.js,必填参数
                tempData:{id:'#_dialog_como_xx'}, //模版参数，* id,必填参数
                setOffsets:{                             //弹出层容器位置的调整值
                    left:0,
                    top:0
                },
                hoverId:'div.como_menuitem',
                hoverCss:'como_menuitem_selected',
                findTextVal:'div.como_menuitem_label',
                onBeforeStart:function () {
                }, //自定义事件
                completeEvent:function () {
                }               //自定义事件
            };

            var options = $.extend(defaults, options);

            var remove_all = function(){
                $("div[id^='_dialog_como_']").remove();
            };

            $(options.triggerId).live(options.eventType, function (evt) {//给触发元素绑定触发事件


                var evt_target_id = '_dialog_como'+evt.currentTarget.id;

                    options.tempData.id = evt_target_id;

                    var off_left = $(this).offset().left;
                    var off_top = $(this).offset().top;
                    var trigger_height = $(this).height();

                    remove_all();

                    options.tempData.left = off_left;
                    options.tempData.top = off_top + trigger_height - $(document).scrollTop();

                    $('body').append(options.temp(options.tempData));

                    $('#' + evt_target_id).find(options.hoverId).bind('mouseenter', function (e) {
                        var target_dom = $('#' + e.currentTarget.id)

                        //选项hover x效果
                        target_dom.siblings(options.hoverId)
                            .removeClass(options.hoverCss)
                            .end()
                            .addClass(options.hoverCss);

                        switch (options.selectType){
                            case 'baobei_select':
                                //选中选项卡值
                                target_dom.bind('click', function () {

                                    var show_key_id = target_dom.attr('id');
                                    var show_str = target_dom.find().text(options.findTextVal);
                                    if (show_str == '新建专辑') {
                                        $('#' + evt.currentTarget.id).hide();
                                        $('#' + evt.currentTarget.id).parents('div.item').find('div.input').remove();

                                        var new_name = $('#' + evt.currentTarget.id).find("input[name$=_id]").attr('name').split('_');
                                        $('#' + evt.currentTarget.id).parents('div.item').append('<div class="input"><input type="text" name="new' + new_name[0] + '" value="请输入……"  class="hint_blank"><em id="search' + new_name[0] + '" title="搜索/返回下拉选项卡"></em></div>');
                                        //$("input[name=new"+new_name[0]+"]").focus();
                                        $("input[name=new" + new_name[0] + "]").focusin(function () {
                                            if ($(this).val() == '请输入……') {
                                                $(this).val('');
                                            }
                                        }).focusout(function () {
                                                if ($(this).val() == '') {
                                                    $(this).val('请输入……');
                                                }
                                            });
                                        //不想新建 返回效果
                                        $('#search' + new_name[0]).bind('click', function () {
                                            $('#' + evt.currentTarget.id).show();
                                            $('#' + evt.currentTarget.id).parents('div.item').find('div.input').remove();
                                        });
                                    } else {
                                        $('#' + evt.currentTarget.id).find('span').text(show_str);
                                        $('#' + evt.currentTarget.id).find("input[name$=_id]").val(show_key_id);
                                    }
                                    remove_all();
                                });
                                break;
                        }
                    });

            });
        },

        //所有选项卡切换功能
        switch_tab:function (options) {
            var defaults = {
                tabMenu:'#_dialog_login_register ul.white',
                menuItem:'li',
                menuCss:'active',
                tabBox:'#_dialog_login_register div.box',
                boxItem:'form',
                boxCss:'display_css', //cssshow 样式控制显示/隐藏 other 则为添加样式
                currIndex:0,
                eventType:"click", //触发事件的类型
                timeOut:0,         //延迟时间
                autoRun:0,          //自动运行时间
                switchBtn:false,
                onBeforeStart:function () {
                }, //自定义事件
                completeEvent:function () {
                }               //自定义事件
            };

            var options = $.extend(defaults, options);

            var tabMenu = $(options.tabMenu),
                menuItem = tabMenu.find(options.menuItem),
                tabBox = $(options.tabBox),
                boxItem = tabBox.find(options.boxItem),
                timer;

            //绑定事件执行切换
            menuItem.bind(options.eventType, function(){
                options.onBeforeStart();
                delay($(this), options.timeout);
                options.completeEvent();
            });

            //是否延迟执行
            delay = function( elem, time ){
                time ? setTimeout(function(){switchTab(elem);},time) : switchTab(elem);
            };

            //执行切换事件
            var switchTab = function(elem){
                elem.siblings(options.menuItem)
                    .removeClass(options.menuCss)
                    .end()
                    .addClass(options.menuCss);

                switch (options.boxCss) {
                    case 'display_css':
                        boxItem.siblings(options.boxItem)
                            .hide()
                            .end()
                            .eq(elem.index())
                            .show();
                        break;
                    default:
                        boxItem.siblings(options.boxItem)
                            .addClass(options.boxCss)
                            .end()
                            .eq(elem.index())
                            .removeClass(options.boxCss);
                        break;
                }
            };

            start = function(){
                if( !options.autoRun ) return;
                timer = setInterval(autoRunTab, options.autoRun );
            };

            autoRunTab = function (isPrev) {
                options.onBeforeStart();

                var current = tabMenu.find(options.menuItem+'.'+options.menuCss),
                    firstItem = menuItem.eq(0),
                    lastItem = menuItem.eq(options.menuItem.length - 1),
                    len = menuItem.length,
                    index = current.index(),
                    item, i;

                if (isPrev) {
                    index -= 1;
                    item = index === -1 ? lastItem : current.prev(options.menuItem);
                }else {
                    index += 1;
                    item = index === len ? firstItem : current.next(options.menuItem);
                }

                i = index === len ? 0 : index;

                current.removeClass(options.menuCss);
                item.addClass(options.menuCss);

                switch (options.boxCss) {
                    case 'display_css':
                        boxItem.siblings(options.boxItem)
                            .hide()
                            .end()
                            .eq(i)
                            .show();
                        break;
                    default:
                        boxItem.siblings(options.boxItem)
                            .addClass(options.boxCss)
                            .end()
                            .eq(i)
                            .removeClass(options.boxCss);
                        break;
                }
                options.completeEvent();
            };

            if(options.autoRun){
                start();
                $(this).hover(function(){
                    clearInterval( timer );
                    timer = undefined;
                },function(){
                    start();
                });
            }

            if (options.switchBtn) {
                tabBox.append('<a href="#prev" class="tab_prev"><</a>&nbsp;&nbsp;<a href="#next" class="tab_next">></a>');
                var prevBtn = $('.tab_prev', tabBox),
                    nextBtn = $('.tab_next', tabBox);
                prevBtn.click(function (e) {
                    autoRunTab(true);
                    e.preventDefault();
                });
                nextBtn.click(function (e) {
                    autoRunTab();
                    e.preventDefault();
                });
            }
        },

        //顶部搜索输入框推荐搜索文字标签效果
        search_input_show:function (options) {
            var defaults = {
                domId:'#SearchTxt'   //显示元素
            };

            var options = $.extend(defaults, options);

            var dom = $(options.domId);
            var ele = dom.filter(':text');

            var texts = dom.attr('data_str').split('|');

            if (texts == null || texts.length == 0) {
                return this;
            }

            interval = dom.attr('data_interval') || 5000;

            if (typeof texts == 'string') {
                texts = [ texts ];
            }
            ele.each(function (i, e) {
                var me = $(ele[i]), curIndex = 0, timer = null;
                var start = function (ele) {
                    if (texts.length > 1) {
                        if (timer != null)
                            stop();
                        timer = window.setInterval(function () {
                            curIndex = ++curIndex % texts.length;
                            $(ele).val(texts[curIndex]);
                        }, interval);
                    }
                };
                var stop = function () {
                    window.clearInterval(timer);
                    timer = null;
                };
                me.bind('focus', function () {
                    var me = $(this);
                    if (me.val() == texts[curIndex]) {
                        me.val('');
                        stop();
                    }
                });
                me.bind('blur', function () {
                    var me = $(this);
                    if (me.val() == '') {
                        me.val(texts[curIndex]);
                        start(me);
                    }
                });
                me.val(texts[curIndex]);
                start(me);
            });
            return this;
        },

        //图片轮播
        slider_show:function (options) {
            var Settings = {
                slider_banner:"#index_slide_show ol", //banner 容器
                banner_tag:"li", //包裹banner内容的标签
                slider_text:"ul.switch_btn li.left", //text 容器
                text_tag:"span", //包裹banner内容的标签
                slider_hover:"ul.switch_btn li.right", //hover 容器
                hover_tag:"p", //包裹banner内容的标签
                trigger:'click', //触发事件 注意用mouseover代替hover
                speed:300, //动画速度
                space:5000 //时间间隔
            };

            Settings = $.extend({}, Settings, options);

            var index = 0;
            var $banner_box = $(document).find(Settings.slider_banner), $banner_contents = $banner_box.find(Settings.banner_tag);
            var $text_box = $(document).find(Settings.slider_text), $text_contents = $text_box.find(Settings.text_tag);
            var $hover_box = $(document).find(Settings.slider_hover), $hover_contents = $hover_box.find(Settings.hover_tag);

            function slider() {

                if (index >= $banner_contents.length) {
                    index = 0;
                }
                $text_contents.eq(index).css("display", 'block').siblings(Settings.text_tag).css("display", 'none');
                $hover_contents.eq(index).addClass("on").siblings(Settings.hover_tag).removeClass("on");
                $banner_contents.eq(index).show().siblings().hide();
                $banner_contents.eq(index).animate({opacity:1}, Settings.speed);
                $banner_contents.eq(index).siblings(Settings.banner_tag).animate({opacity:0}, Settings.speed);

                index++;
            };

            var Timer = setInterval(slider, Settings.space);
            $hover_contents.bind(Settings.trigger, function () {
                _pause();
                index = $(this).index();
                slider();
                _continue();
            });
            $banner_box.hover(_pause, _continue);
            function _pause() {
                clearInterval(Timer);
            };
            function _continue() {
                Timer = setInterval(slider, Settings.space);
            };

        },
        //帮助层
        help:function () {
            if (!$.browser.msie || ($.browser.msie && $.browser.version < 9)) {
                $('body').append(NoviceHelpTemp({'real_id':1}));
                //IE6,7,8基本就告别新手帮助了
                $('#step1').show();
                $('.helpclose').on('click', function () {
                    $('#help').remove();
                });
                $('.next').on('click', function () {
                    var obj = $(this).parents('.step');
                    var step = obj.attr('step');
                    obj.hide();
                    $('#step' + (parseInt(step) + 1)).show();
                });
                $('.over').on('click', function () {
                    $('#help').remove();
                });
            }
        },

        //页面进入检查 =》检查浏览器版本
        check_browser_version:function () {
            //IE6升级提示
            $('body').html(CheckBrowserVersion());
        },

        //返回顶部
        gotop:function(){
            $('body').append('<div title="返回顶部" id="gotop" style="display: none;"></div>');

            $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body');
            $animating = false;
            $('#gotop').click(function(){
                if ($animating == false) {
                    $body.animate({scrollTop: 0}, 500);
                    $animating = true;
                }
                return false;
            });
            $(window).scroll(function(){
                if ($('#gotop').offset().top > 1000) {
                    $('#gotop').css('display', 'inline-block');
                } else {
                    $('#gotop').css('display', 'none');
                    $animating = false;
                }
            });
        }
    }
})(jQuery);